#include<stdio.h>
#include<stdlib.h>
#include<assert.h>

typedef int SLDataType;

typedef struct SListNode
{
	struct SListNode* next;
	SLDataType value;
}SListNode;

SListNode* BuySListNode(SLDataType x);

void SListInit(SListNode** pplist);
void SListDestroy(SListNode** pplist);

void SListPushFront(SListNode** pplist, SLDataType x);
void SListPopFront(SListNode** pplist);
void SListPushBack(SListNode** pplist, SLDataType x);
void SListPopBack(SListNode** pplist);

SListNode* SListFind(SListNode** pplist, SLDataType x);
void SListInsertAfter( SListNode* pos, SLDataType x);
void SListEraseAfter( SListNode* pos);
void SListModify(SListNode** pplist, SListNode* pos);

void SListPrint(SListNode *plist);

//#include<stdio.h>
//#include<stdlib.h>
//#include<assert.h>
//
//typedef int SLDataType;
//
//typedef struct SListNode
//{
//	struct SListNode*next;
//	SLDataType value;
//}SListNode;
//
//void SListInit(SListNode* phead);
//void SListDestroy(SListNode* phead);
//void SListPushBack(SListNode* phead, SLDataType x);
//void SListPushFront(SListNode* phead, SLDataType x);
//void SListPopBack(SListNode* phead);
//void SListPopFront(SListNode* phead);
//void SListPrint(SListNode phead);
//int SListFind(SListNode* phead, SLDataType x);
//void SListInsert(SListNode* phead,int pos, SLDataType x);
//void SListErase(SListNode* phead, int pos);
//void SListModify(SListNode* phead, int pos);
